今天我们就来一起看看 powershell 中的管道符,使用 “|” 表示.
我们先来看两个命令:
从第二个命令,我们应该就能看出了管道符的作用,就是将第一个命令的输出,作为第二个命令的输入。我们通过 “Get-ChildItem -Path c:\” 获取 C 盘下的子文件及目录,然后将结果传递给 Format-Table 进行格式化输出,我们在后面加了参数 Name,所以只显示了 Name 一列。
PS C:\Users\Administrator> Get-ChildItem -Path c:\
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 6/5/2021 9:22 PM PerfLogs
d-r--- 9/13/2021 8:06 PM Program Files
d----- 9/15/2018 2:08 AM Program Files (x86)
d-r--- 9/10/2021 12:52 AM Users
d----- 9/13/2021 7:23 PM Windows
PS C:\Users\Administrator> Get-ChildItem -Path c:\ | Format-Table Name
Name
----
PerfLogs
Program Files
Program Files (x86)
Users
Windows
通过管道符,我们可以将命令的结果,直接输出到文件:
PS C:\Users\Administrator> Get-ChildItem -Path c:\ | Out-File C:\1.csv
打开 C 盘,我们可以看到,有一个 1.csv 文件:
使用同样的方法,我们可以丢弃命令的输出:
PS C:\Users\Administrator> Get-ChildItem -Path c:\ | Out-Null
我们还可以通过重定向的方式,将命令的结果输出到文件:
PS C:\Users\Administrator> Get-ChildItem -Path c:\ > c:\2.csv
在 C 盘,你可以看到一个 2.csv 的文件:
当你再次运行命令查看另一个目录,并重定向到文件:
PS C:\Users\Administrator> Get-ChildItem -Path C:\Users\ > c:\2.csv
文件内容被清空,重新写入了:
如果你想保存文件的原有内容,你需要使用 >> 进行重定向:
PS C:\Users\Administrator> Get-ChildItem -Path c:\ >> c:\2.csv
验证: